A height field is a function that maps a point on the 2D plane to a scalar value. It can be visualized as the graph of the scalar values on the plane. An analogy is a terrain map consisting of mountains and valleys. The ridges of the mountains and bottom-most regions of the valleys form connected curves and reveal important mathematical characteristics of the height field. Height fields commonly occur in the analysis of shape and design properties or functional characteristics of products. Therefore, a robust algorithm for reliably computing ridge and valley curves is necessary.
Ridges and valleys are loci of points where the height value attains an extremum along one of the two eigenvectors of the Hessian matrix of the height field. When the extremum occurs along the smaller of the two eigenvalues, then the curve is a ridge, and when the extremum occurs along the larger of the two eigenvalues the curve is a valley. Existing approaches for computing ridges and valleys can be classified into two categories—sampling and tracing.
The sampling approach proceeds by evaluating surface differential properties and testing for the ridge and valley condition at a number of sample points on the plane. This approach can miss ridge and valley points if sufficiently high sampling resolutions are not used. This approach can also report false positives especially in narrow ridge/valley regions due to limited sampling resolutions. Further, the sampling approach only reports ridge and valley points, whereas ridges and valleys form continuous curves.
The tracing approach attempts to extract ridge and valley curves by identifying a set of starting points and following ridge and valley curves. Most approaches work on discrete representations of height fields and therefore are approximate and tend to suffer from inaccuracies and missed ridges and valleys.